Load simulated data

Plot: Proportion optimal machine selections across age groups and trials

Compute average error in agency predictions

Plot: Error in optimal machine selections across age groups and trials

Agency task: Agency decisions

Plot: Sensitivity to value of control

Compute average error in agency predictions

Plot: Agency decision model error

Summary stats: Sensitivity to value of control

LS0tCnRpdGxlOiAiVm9DIEFuYWx5c2VzIFBhcnQgNTogUG9zdGVyaW9yIFByZWRpY3RpdmUgQ2hlY2tzIgpkYXRlOiAxLzgvMjQKb3V0cHV0OgogICAgaHRtbF9kb2N1bWVudDoKICAgICAgICBkZl9wcmludDogJ3BhZ2VkJwogICAgICAgIHRvYzogdHJ1ZQogICAgICAgIHRvY19mbG9hdDoKICAgICAgICAgICAgY29sbGFwc2VkOiBmYWxzZQogICAgICAgICAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlCiAgICAgICAgbnVtYmVyX3NlY3Rpb25zOiBmYWxzZQogICAgICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICAgICAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQotLS0KYGBge3IgY2h1bmsgc2V0dGluZ3MsIGluY2x1ZGUgPSBGQUxTRX0KIyBzZXQgY2h1bmsgc2V0dGluZ3MKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UpCmtuaXRyOjpvcHRzX2NodW5rJHNldChkcGk9NjAwKQprbml0cjo6b3B0c19rbml0JHNldChyb290LmRpciA9IHJwcm9qcm9vdDo6ZmluZF9yc3R1ZGlvX3Jvb3RfZmlsZSgpKQpgYGAKICAgICAgICAgICAgICAgICAgICAgIApgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyBsaXN0IGFsbCBwYWNrYWdlcyByZXF1aXJlZCBmb3IgdGhlIGFuYWx5c2lzCmxpc3Qub2YucGFja2FnZXMgPC0gYygidGlkeXZlcnNlIiwgImFmZXgiKQoKIyBjaGVjayBpZiBhbGwgcGFja2FnZXMgYXJlIGluc3RhbGxlZCwgaWYgbm90LCBpbnN0YWxsIHRoZW0uCm5ldy5wYWNrYWdlcyA8LSBsaXN0Lm9mLnBhY2thZ2VzWyEobGlzdC5vZi5wYWNrYWdlcyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpWywiUGFja2FnZSJdKV0KaWYobGVuZ3RoKG5ldy5wYWNrYWdlcykpIGluc3RhbGwucGFja2FnZXMobmV3LnBhY2thZ2VzKQoKIyBsb2FkIGFsbCBwYWNrYWdlcyAKbGFwcGx5KGxpc3Qub2YucGFja2FnZXMsIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKCiMgYWRkIHRoZW1lIGZvciBwbG90dGluZwp2b2NfdGhlbWUgPC0gZnVuY3Rpb24gKCkgewogIHRoZW1lKAogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBjb2xvcj0iZ3JheTc1IiksCiAgICBwYW5lbC5iYWNrZ3JvdW5kICA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsPSJ0cmFuc3BhcmVudCIsIGNvbG91cj1OQSksCiAgICBsZWdlbmQua2V5ID0gZWxlbWVudF9yZWN0KGZpbGw9InRyYW5zcGFyZW50IiwgY29sb3VyPU5BKSwKICAgIGxpbmUgPSBlbGVtZW50X2JsYW5rKCksCiAgICBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG9yPSJncmF5NzUiKSwKICAgIHRleHQ9ZWxlbWVudF90ZXh0KGZhbWlseT0iQXZlbmlyIiksCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwKICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwKICAgIHRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksCiAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLAogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTEyKQogICkKfQoKYGBgCgojIyBMb2FkIHNpbXVsYXRlZCBkYXRhCmBgYHtyIGxvYWQgZGF0YX0Kc2ltX2RhdGEgPC0gcmVhZF9jc3YoIlJMX21vZGVsaW5nL291dHB1dC9wb3N0ZXJpb3JfcHJlZGljdGl2ZS9zaW1EYXRhX3N1YlBhcmFtc19mb3VyQWxwaGFfdHdvQmV0YV9hZ2VuY3lCb251cy5jc3YiKSAlPiUKICAgIHJlbmFtZSh0b2tlbk9mZmVyID0gb2ZmZXIsCiAgICAgICAgICAgYWdlbmN5UmVzcCA9IGFnZW5jeUNob2ljZSwKICAgICAgICAgICBiYW5kaXRSZXNwID0gYmFuZGl0Q2hvaWNlLAogICAgICAgICAgIHJld2FyZCA9IG91dGNvbWUpICU+JQogICAgbXV0YXRlKGFnZW5jeSA9IGNhc2Vfd2hlbihhZ2VuY3lSZXNwID09IDIgfiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VuY3lSZXNwID09IDEgfiAwKSwKICAgICAgICAgICBjb3JyZWN0ID0gY2FzZV93aGVuKGxlZnRCYW5kaXQgPT0gImJhbmRpdDUwYSIgJiBiYW5kaXRSZXNwID09IDEgfiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEJhbmRpdCA9PSAiYmFuZGl0NTBhIiAmIGJhbmRpdFJlc3AgPT0gMiB+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQ1MGIiICYgYmFuZGl0UmVzcCA9PSAxIH4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRCYW5kaXQgPT0gImJhbmRpdDUwYiIgJiBiYW5kaXRSZXNwID09IDIgfiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEJhbmRpdCA9PSAiYmFuZGl0MzAiICYgYmFuZGl0UmVzcCA9PSAxIH4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRCYW5kaXQgPT0gImJhbmRpdDMwIiAmIGJhbmRpdFJlc3AgPT0gMiB+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQ3MCIgJiBiYW5kaXRSZXNwID09IDEgfiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEJhbmRpdCA9PSAiYmFuZGl0NzAiICYgYmFuZGl0UmVzcCA9PSAyIH4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRCYW5kaXQgPT0gImJhbmRpdDEwIiAmIGJhbmRpdFJlc3AgPT0gMSB+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQxMCIgJiBiYW5kaXRSZXNwID09IDIgfiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEJhbmRpdCA9PSAiYmFuZGl0OTAiICYgYmFuZGl0UmVzcCA9PSAxIH4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRCYW5kaXQgPT0gImJhbmRpdDkwIiAmIGJhbmRpdFJlc3AgPT0gMiB+IDApLAogICAgICAgICAgIGNvbmRpdGlvbiA9IGNhc2Vfd2hlbihsZWZ0QmFuZGl0ID09ICJiYW5kaXQzMCIgfiAiYmFuZGl0czcwMzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQ3MCIgfiAiYmFuZGl0czcwMzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQ5MCIgfiAiYmFuZGl0czkwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQxMCIgfiAiYmFuZGl0czkwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QmFuZGl0ID09ICJiYW5kaXQ1MGEiIH4gImJhbmRpdHM1MDUwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEJhbmRpdCA9PSAiYmFuZGl0NTBiIiB+ICJiYW5kaXRzNTA1MCIpLAogICAgICAgICAgIHZvYyA9IGNhc2Vfd2hlbihjb25kaXRpb249PSJiYW5kaXRzOTAxMCIgfiA5IC0gKHRva2VuT2ZmZXIgKyA1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uPT0iYmFuZGl0czcwMzAiIH4gNyAtICh0b2tlbk9mZmVyICsgNSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbj09ImJhbmRpdHM1MDUwIiB+IDUgLSAodG9rZW5PZmZlciArIDUpKSkgJT4lCiAgICBncm91cF9ieShzdWJJRCwgc2ltSUQpICU+JQogICAgbXV0YXRlKHRyaWFsID0gcm93X251bWJlcigpKSAlPiUKICAgIHVuZ3JvdXAoKSAlPiUKICAgIGdyb3VwX2J5KHN1YklELCBzaW1JRCwgY29uZGl0aW9uKSAlPiUKICAgIG11dGF0ZSh0cmlhbE9mQ29uZCA9IHJvd19udW1iZXIoKSkgJT4lCiAgICB1bmdyb3VwKCkgJT4lCiAgICBtdXRhdGUoZGF0YVR5cGUgPSAiTW9kZWwgU2ltdWxhdGlvbiIpCiAgICAKc2ltX2RhdGEkc3ViSUQgPC0gc3RyX3N1YihzaW1fZGF0YSRzdWJJRCwgZW5kID0gLTUpCmBgYAoKYGBge3IgbG9hZCByZWFsIGRhdGF9CgojbG9hZCBkZW1vZ3JhcGhpYyBpbmZvCnN1Yl9pbmZvIDwtIHJlYWRfY3N2KCdkYXRhL3ZvY19zdWJfaW5mby5jc3YnKSAlPiUKICAgIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAiQ2hpbGRyZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxMi45OSAmIGFnZSA8IDE4IH4gIkFkb2xlc2NlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlID4gMTcuOTkgfiAiQWR1bHRzIikpCgpzdWJfaW5mbyRhZ2VfZ3JvdXAgPC0gZmFjdG9yKHN1Yl9pbmZvJGFnZV9ncm91cCwgbGV2ZWxzID0gYygiQ2hpbGRyZW4iLCAiQWRvbGVzY2VudHMiLCAiQWR1bHRzIikpCgojbWVyZ2UgZGVtb2dyYXBoaWNzIHdpdGggc2ltdWxhdGVkIGRhdGEKY29tYmluZWRfZGF0YSA8LSBmdWxsX2pvaW4oc3ViX2luZm8sIHNpbV9kYXRhLCBieSA9IGMoInN1YklEIikpCgojbG9hZCBiYW5kaXQgZGF0YQpiYW5kaXRUYXNrIDwtIHJlYWRfY3N2KCdkYXRhL3Byb2Nlc3NlZC9iYW5kaXRfdGFzay5jc3YnKSAlPiUKICAgICBtdXRhdGUoZGF0YVR5cGUgPSAiRW1waXJpY2FsIiwKICAgICAgICAgICBzaW1JRCA9IDApCgojbWVyZ2UgZGVtb2dyYXBoaWNzIHdpdGggcmVhZGwgZGF0YQpiYW5kaXRUYXNrIDwtIGZ1bGxfam9pbihzdWJfaW5mbywgYmFuZGl0VGFzaywgYnkgPSBjKCJzdWJJRCIpKQoKCiNtZXJnZSByZWFsIGRhdGEKZW1waXJpY2FsX2RhdGEgPC0gYmFuZGl0VGFzayAlPiUgCiAgICBzZWxlY3Qoc3ViSUQsIGdlbmRlciwgYWdlLCBhZ2UsIGFnZV9ncm91cCwgc2ltSUQsIGxlZnRCYW5kaXQsIHJpZ2h0QmFuZGl0LAogICAgICAgICAgIHRva2VuT2ZmZXIsIGFnZW5jeVJlc3AsIGJhbmRpdFJlc3AsIHJld2FyZCwgYWdlbmN5LCBjb3JyZWN0ID0gc3RhZ2VfMl9hY2MsCiAgICAgICAgICAgY29uZGl0aW9uLCB2b2MsIHRyaWFsLCB0cmlhbE9mQ29uZCwgZGF0YVR5cGUpCgphbGxfZGF0YSA8LSByYmluZChjb21iaW5lZF9kYXRhLCBlbXBpcmljYWxfZGF0YSkgJT4lCiAgICBtdXRhdGUoYmxvY2sgPSBmbG9vcigodHJpYWwtMSkvMjEgKyAxKSkKYGBgCgoKIyMgUGxvdDogUHJvcG9ydGlvbiBvcHRpbWFsIG1hY2hpbmUgc2VsZWN0aW9ucyBhY3Jvc3MgYWdlIGdyb3VwcyBhbmQgdHJpYWxzCmBgYHtyIHBsb3QgYmFuZGl0IGNob2ljZXMgYWNyb3NzIHRyaWFscywgd2lkdGggPSA3LCBoZWlnaHQgPSA0LCB1bml0ID0gImluIn0KCiNwbG90IHNpbXVsYXRlZCBkYXRhCmFsbF9kYXRhICU+JSAKICBmaWx0ZXIoYWdlbmN5PT0xLCBjb25kaXRpb24hPSJiYW5kaXRzNTA1MCIpICU+JSAKICBncm91cF9ieShjb25kaXRpb24sIGJsb2NrLCBhZ2VfZ3JvdXAsIGRhdGFUeXBlKSAlPiUgCiAgc3VtbWFyaXplKHBjdENvcnIgPSBtZWFuKGNvcnJlY3QpLCAKICAgIHNlID0gc2QoY29ycmVjdCkvc3FydChuKCkpKSAlPiUgCiAgZ2dwbG90KC4sIGFlcyh4PWJsb2NrLCB5PXBjdENvcnIsIGNvbG9yPWNvbmRpdGlvbikpICsKICBnZW9tX3BvaW50KCkgKwogICAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWVzKGZpbGwgPSBjb25kaXRpb24pKSArCiAgICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNSwgbGluZXR5cGU9ImRhc2hlZCIpICsKICAgIHlsYWIoIlByb3BvcnRpb24gT3B0aW1hbCBNYWNoaW5lIFNlbGVjdGlvbnMiKSArCiAgICB4bGFiKCJCbG9jayIpICsKICAgIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoYWdlX2dyb3VwKSwgcm93cyA9IHZhcnMoZGF0YVR5cGUpKSArCiAgICBzY2FsZV9maWxsX21hbnVhbChuYW1lPSJDb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIjcwLzMwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI5MC8xMCIpLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPWMoIiMwMDc3YjYiLCAiIzAzMDQ1ZSIpLCAKICAgICAgICAgICAgICAgICAgICAgIGd1aWRlID0gZ3VpZGVfbGVnZW5kKHJldmVyc2U9VFJVRSkpICsKICAgIHNjYWxlX2NvbG9yX21hbnVhbChuYW1lPSJDb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIjcwLzMwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI5MC8xMCIpLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPWMoIiMwMDc3YjYiLCAiIzAzMDQ1ZSIpLAogICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2xlZ2VuZChyZXZlcnNlPVRSVUUpKSArCiAgICB2b2NfdGhlbWUoKSArCiAgICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MTIpKQpgYGAKCgojIyBDb21wdXRlIGF2ZXJhZ2UgZXJyb3IgaW4gYWdlbmN5IHByZWRpY3Rpb25zCmBgYHtyIHBvc3RlcmlvciBwcmVkaWN0aXZlIGVycm9yIGluIG1hY2hpbmUgc2VsZWN0aW9uc30KCnNpbV9tYWNoaW5lX21lYW5zIDwtIGFsbF9kYXRhICU+JQogICAgZmlsdGVyKGFnZW5jeT09MSwgY29uZGl0aW9uIT0iYmFuZGl0czUwNTAiKSAlPiUgCiAgICBmaWx0ZXIoZGF0YVR5cGUgPT0gIk1vZGVsIFNpbXVsYXRpb24iKSAlPiUKICAgIGdyb3VwX2J5KHN1YklELCBhZ2UsIGFnZV9ncm91cCwgYmxvY2ssIGNvbmRpdGlvbikgJT4lCiAgICBzdW1tYXJpemUoc2ltTWVhbkNvcnJlY3Q9IG1lYW4oY29ycmVjdCwgbmEucm0gPSBUKSkKClZvQ19zdWJfZXJyb3JfbWFjaGluZXMgPC0gYWxsX2RhdGEgJT4lCiAgICBmaWx0ZXIoYWdlbmN5PT0xLCBjb25kaXRpb24hPSJiYW5kaXRzNTA1MCIpICU+JSAKICAgIGZpbHRlcihkYXRhVHlwZSA9PSAiRW1waXJpY2FsIikgJT4lCiAgICBzZWxlY3Qoc3ViSUQsIGFnZSwgYWdlX2dyb3VwLCBibG9jaywgY29uZGl0aW9uLCBjb3JyZWN0KSAlPiUKICAgIGxlZnRfam9pbihzaW1fbWFjaGluZV9tZWFucywgYnkgPSBjKCJzdWJJRCIsICJhZ2UiLCAiYWdlX2dyb3VwIiwgImJsb2NrIiwgImNvbmRpdGlvbiIpKSAlPiUKICAgIG11dGF0ZShlcnJvciA9IHNpbU1lYW5Db3JyZWN0IC0gY29ycmVjdCwKICAgICAgICAgICBhYnNFcnJvciA9IGFicyhlcnJvcikpCgpWb0NfbWVhbl9lcnJvcl9tYWNoaW5lcyA8LSBWb0Nfc3ViX2Vycm9yX21hY2hpbmVzICU+JQogICAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBibG9jaywgY29uZGl0aW9uKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuRXJyb3IgPSBtZWFuKGVycm9yLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNlRXJyb3I9IHNkKGVycm9yIC8gc3FydChuKCkpKSwKICAgICAgICAgICAgICBtZWFuQWJzRXJyb3IgPSBtZWFuKGFic0Vycm9yLCBuYS50bSA9IFQpCiAgICAgICAgICAgICAgKQpgYGAKCiMjIFBsb3Q6IEVycm9yIGluICBvcHRpbWFsIG1hY2hpbmUgc2VsZWN0aW9ucyBhY3Jvc3MgYWdlIGdyb3VwcyBhbmQgdHJpYWxzCmBgYHtyIHBsb3QgbW9kZWwgZXJyb3IgYmFuZGl0IGNob2ljZXMgYWNyb3NzIHRyaWFscywgd2lkdGggPSA3LCBoZWlnaHQgPSA0LCB1bml0ID0gImluIn0KCiNwbG90IHNpbXVsYXRlZCBkYXRhCmdncGxvdChWb0NfbWVhbl9lcnJvcl9tYWNoaW5lcywgYWVzKHg9YmxvY2ssIHk9bWVhbkVycm9yLCBjb2xvcj1jb25kaXRpb24pKSArCiAgZ2VvbV9wb2ludCgpICsKICAgIGdlb21fbGluZSgpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZT0iZGFzaGVkIikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBtZWFuRXJyb3IgLSBzZUVycm9yLCB5bWF4ID0gbWVhbkVycm9yICsgc2VFcnJvciksIHdpZHRoID0gLjEpICsgCiAgdm9jX3RoZW1lKCkgKwogIHlsYWIoIk1lYW4gRXJyb3IgaW4gTW9kZWwgUHJlZGljdGlvbnMiKSArCiAgeGxhYigiQmxvY2siKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhhZ2VfZ3JvdXApKSArCiAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKG5hbWU9IkNvbmRpdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiNzAvMzAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjkwLzEwIiksCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9YygiIzAwNzdiNiIsICIjMDMwNDVlIiksIAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBndWlkZV9sZWdlbmQocmV2ZXJzZT1UUlVFKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbChuYW1lPSJDb25kaXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIjcwLzMwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI5MC8xMCIpLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPWMoIiMwMDc3YjYiLCAiIzAzMDQ1ZSIpLAogICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2xlZ2VuZChyZXZlcnNlPVRSVUUpKSArCiAgdGhlbWUoc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTEyKSkKYGBgCgojIEFnZW5jeSB0YXNrOiBBZ2VuY3kgZGVjaXNpb25zIAoKIyMgUGxvdDogU2Vuc2l0aXZpdHkgdG8gdmFsdWUgb2YgY29udHJvbApgYGB7ciBWb0MgcGxvdCwgZmlnLmhlaWdodCA9IDQsIGZpZy53aWR0aCA9IDcsIHVuaXQgPSAiaW4ifQoKVm9DX3Bsb3Rfc3ViX21lYW5zIDwtIGFsbF9kYXRhICU+JSAKICAgIG11dGF0ZSh0YXNrSGFsZiA9IGNhc2Vfd2hlbih0cmlhbCA8IDE1OCB+ICJGaXJzdCBIYWxmIG9mIFRhc2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFsID4gMTU3IH4gIlNlY29uZCBIYWxmIG9mIFRhc2siKSkgJT4lCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIHRhc2tIYWxmLCB2b2MsIHN1YklELCBkYXRhVHlwZSkgJT4lCiAgICBzdW1tYXJpemUobWVhblN1YkFnZW5jeSA9IG1lYW4oYWdlbmN5LCBuYS5ybSA9IFQpKQoKVm9DX3Bsb3RfbWVhbnMgPC0gVm9DX3Bsb3Rfc3ViX21lYW5zICU+JSAKICAgIGdyb3VwX2J5KGFnZV9ncm91cCwgdGFza0hhbGYsIHZvYywgZGF0YVR5cGUpICU+JQogICAgc3VtbWFyaXplKG1lYW5BZ2VuY3kgPSBtZWFuKG1lYW5TdWJBZ2VuY3ksIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2VBZ2VuY3kgPSBzZChtZWFuU3ViQWdlbmN5IC8gc3FydChuKCkpKSkKCiNwbG90ClZvQ19wbG90IDwtIGdncGxvdChWb0NfcGxvdF9tZWFucywgYWVzKHggPSB2b2MsIHkgPSBtZWFuQWdlbmN5LCBjb2xvciA9IGFnZV9ncm91cCkpICsKICAgICAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyh0YXNrSGFsZiksIHJvd3MgPSB2YXJzKGRhdGFUeXBlKSkgKwogICAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBhZ2VfZ3JvdXApKSArIAogICAgZ2VvbV9lcnJvcmJhcihhZXMoY29sb3IgPSBhZ2VfZ3JvdXAsIHltaW4gPSBtZWFuQWdlbmN5IC0gc2VBZ2VuY3ksIHltYXggPSBtZWFuQWdlbmN5ICsgc2VBZ2VuY3kpLCB3aWR0aCA9IC4xKSArIAogICAgZ2VvbV9saW5lKGFlcyhncm91cCA9IGFnZV9ncm91cCkpICsKICAgIHZvY190aGVtZSgpICsgCiAgICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzPWMoIiM4NDM0N0MiLCAiI0I0MDQyNCIsICIjRUI2RDFFIiksIG5hbWUgPSAiQWdlIEdyb3VwIikgKwogICAgeGxhYigiVmFsdWUgb2YgQ2hvaWNlIChWb0MpIikgKwogICAgeWxhYigiUHJvcG9ydGlvbiBBZ2VuY3kgQ2hvaWNlcyIpICsKICAgIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC41LCBsaW5ldHlwZSA9ICJkYXNoZWQiKSArCiAgICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiKQpWb0NfcGxvdApgYGAKCiMjIENvbXB1dGUgYXZlcmFnZSBlcnJvciBpbiBhZ2VuY3kgcHJlZGljdGlvbnMKYGBge3IgcG9zdGVyaW9yIHByZWRpY3RpdmUgZXJyb3J9CgpzaW1fbWVhbnMgPC0gYWxsX2RhdGEgJT4lCiAgICBmaWx0ZXIoZGF0YVR5cGUgPT0gIk1vZGVsIFNpbXVsYXRpb24iKSAlPiUKICAgIGdyb3VwX2J5KHN1YklELCBhZ2UsIGFnZV9ncm91cCwgdHJpYWwsIGNvbmRpdGlvbiwgdG9rZW5PZmZlcikgJT4lCiAgICBzdW1tYXJpemUoc2ltTWVhbkFnZW5jeSA9IG1lYW4oYWdlbmN5LCBuYS5ybSA9IFQpKQoKVm9DX3N1Yl9lcnJvciA8LSBhbGxfZGF0YSAlPiUKICAgIGZpbHRlcihkYXRhVHlwZSA9PSAiRW1waXJpY2FsIikgJT4lCiAgICBzZWxlY3Qoc3ViSUQsIGFnZSwgYWdlX2dyb3VwLCB0cmlhbCwgY29uZGl0aW9uLCB0b2tlbk9mZmVyLCBhZ2VuY3ksIHZvYykgJT4lCiAgICBsZWZ0X2pvaW4oc2ltX21lYW5zLCBieSA9IGMoInN1YklEIiwgImFnZSIsICJhZ2VfZ3JvdXAiLCAidHJpYWwiLCAiY29uZGl0aW9uIiwgInRva2VuT2ZmZXIiKSkgJT4lCiAgICBtdXRhdGUoZXJyb3IgPSBzaW1NZWFuQWdlbmN5IC0gYWdlbmN5LAogICAgICAgICAgIGFic0Vycm9yID0gYWJzKGVycm9yKSwKICAgICAgICAgICB0YXNrSGFsZiA9IGNhc2Vfd2hlbih0cmlhbCA8IDE1OCB+ICJGaXJzdCBIYWxmIG9mIFRhc2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWFsID4gMTU3IH4gIlNlY29uZCBIYWxmIG9mIFRhc2siKSkgCgpWb0NfbWVhbl9lcnJvciA8LSBWb0Nfc3ViX2Vycm9yICU+JQogICAgZ3JvdXBfYnkoYWdlX2dyb3VwLCB0YXNrSGFsZiwgdm9jKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuRXJyb3IgPSBtZWFuKGVycm9yLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNlRXJyb3I9IHNkKGVycm9yIC8gc3FydChuKCkpKSwKICAgICAgICAgICAgICBtZWFuQWJzRXJyb3IgPSBtZWFuKGFic0Vycm9yLCBuYS50bSA9IFQpCiAgICAgICAgICAgICAgKQpgYGAKCiMjIFBsb3Q6IEFnZW5jeSBkZWNpc2lvbiBtb2RlbCBlcnJvcgpgYGB7ciBWb0MgZXJyb3IgcGxvdCwgZmlnLmhlaWdodCA9IDQsIGZpZy53aWR0aCA9IDcsIHVuaXQgPSAiaW4ifQoKI3Bsb3QKVm9DX2Vycm9yX3Bsb3QgPC0gZ2dwbG90KFZvQ19tZWFuX2Vycm9yLCBhZXMoeCA9IHZvYywgeSA9IG1lYW5FcnJvciwgY29sb3IgPSBhZ2VfZ3JvdXApKSArCiAgICBmYWNldF9ncmlkKGNvbHMgPSB2YXJzKHRhc2tIYWxmKSkgKwogICAgZ2VvbV9wb2ludChhZXMoY29sb3IgPSBhZ2VfZ3JvdXApKSArIAogICAgZ2VvbV9lcnJvcmJhcihhZXMoY29sb3IgPSBhZ2VfZ3JvdXAsIHltaW4gPSBtZWFuRXJyb3IgLSBzZUVycm9yLCB5bWF4ID0gbWVhbkVycm9yICsgc2VFcnJvciksIHdpZHRoID0gLjEpICsgCiAgICBnZW9tX2xpbmUoYWVzKGdyb3VwID0gYWdlX2dyb3VwKSkgKwogICAgdm9jX3RoZW1lKCkgKyAKICAgIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXM9YygiIzg0MzQ3QyIsICIjQjQwNDI0IiwgIiNFQjZEMUUiKSwgbmFtZSA9ICJBZ2UgR3JvdXAiKSArCiAgICB4bGFiKCJWYWx1ZSBvZiBDaG9pY2UgKFZvQykiKSArCiAgICB5bGFiKCJNZWFuIEVycm9yIGluIE1vZGVsIFByZWRpY3Rpb25zIikgKwogICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIikgKwogICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAiZGFzaGVkIikKVm9DX2Vycm9yX3Bsb3QKYGBgCgojIyBTdW1tYXJ5IHN0YXRzOiBTZW5zaXRpdml0eSB0byB2YWx1ZSBvZiBjb250cm9sCmBgYHtyIFZvQyBzdW1tYXJ5IHN0YXRzfQoKIyBXaGF0IHByb3BvcnRpb24gb2YgdHJpYWxzIGRpZCB0aGV5IGNob29zZSBhZ2VuY3kgd2hlbiBWb0Mgd2FzIDA/ClZvQ196ZXJvX21lYW5zX3N1YiA8LSBhbGxfZGF0YSAlPiUgCiAgICBmaWx0ZXIodm9jID09IDApICU+JQogICAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBzdWJJRCwgZGF0YVR5cGUpICU+JQogICAgc3VtbWFyaXplKG1lYW5TdWJBZ2VuY3kgPSBtZWFuKGFnZW5jeSwgbmEucm0gPSBUKSkKClZvQ196ZXJvX21lYW5zX2FnZUdycCA8LSBWb0NfemVyb19tZWFuc19zdWIgJT4lCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIGRhdGFUeXBlKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuQWdlbmN5ID0gbWVhbihtZWFuU3ViQWdlbmN5LCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNlQWdlbmN5ID0gc2QobWVhblN1YkFnZW5jeSAvIHNxcnQobigpKSkpClZvQ196ZXJvX21lYW5zX2FnZUdycAoKClZvQ196ZXJvX21lYW5zIDwtIFZvQ196ZXJvX21lYW5zX3N1YiAlPiUKICAgIHVuZ3JvdXAoKSAlPiUKICAgIHN1bW1hcml6ZShtZWFuQWdlbmN5ID0gbWVhbihtZWFuU3ViQWdlbmN5LCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgIHNlQWdlbmN5ID0gc2QobWVhblN1YkFnZW5jeSAvIHNxcnQobigpKSkpClZvQ196ZXJvX21lYW5zCgojIFdoYXQgd2FzIGF2ZXJhZ2UgVm9DIHdoZW4gcGFydGljaXBhbnRzIGhhZCA1MCUgY2hhbmNlIG9mIGNob29zaW5nIGFnZW5jeT8KVm9DX2NoYW5jZV9tZWFuc19zdWIgPC0gYWxsX2RhdGEgJT4lIAogICAgZ3JvdXBfYnkoYWdlX2dyb3VwLCBzdWJJRCwgdm9jLCBkYXRhVHlwZSkgJT4lCiAgICBzdW1tYXJpemUobWVhblN1YkFnZW5jeSA9IG1lYW4oYWdlbmN5LCBuYS5ybSA9IFQpKSAKCiNpZGVudGlmeSB3aGVuIDUwJSBsaW5lIGlzIGNyb3NzZWQKVm9DX2NoYW5jZV9tZWFucyA8LSBWb0NfY2hhbmNlX21lYW5zX3N1YiAlPiUgCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIHZvYywgZGF0YVR5cGUpICU+JQogICAgc3VtbWFyaXplKG1lYW5BZ2VuY3kgPSBtZWFuKG1lYW5TdWJBZ2VuY3ksIG5hLnJtID0gVCksCiAgICAgICAgICAgICAgc2VBZ2VuY3kgPSBzZChtZWFuU3ViQWdlbmN5IC8gc3FydChuKCkpKSkgJT4lCiAgICB1bmdyb3VwKCkgJT4lCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIGRhdGFUeXBlKSAlPiUKICAgIG11dGF0ZShwcmlvck1lYW5BZ2VuY3kgPSBsYWcobWVhbkFnZW5jeSksCiAgICAgICAgICAgdGhyZXNob2xkID0gY2FzZV93aGVuKG1lYW5BZ2VuY3kgPiAuNSAmIHByaW9yTWVhbkFnZW5jeSA8IC41IH4gMSkpICU+JQogICAgZmlsdGVyKHRocmVzaG9sZCA9PSAxKQpWb0NfY2hhbmNlX21lYW5zCmBgYA==